package com.ruoyi.common.core.annotation;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Locks {

    /**
     * 锁名称 默认使用方法名称 或者 类名称
     */
    String value() default "";

    /**
     * 锁最长持有时长
     * 本地锁 该参数无效
     */
    long timeout() default 1000;

    /**
     * 等待获取锁时长
     */
    long await() default 0;

    /**
     * 未获取到锁提示信息
     */
    String message() default "获取lock失败,请稍后重试!";

    /**
     * 锁前缀
     */
    String prefix() default "lock:";

    TimeUnit timeUnit() default TimeUnit.MILLISECONDS;

    /**
     * 是否使用本地锁
     */
    boolean isLocal() default false;
}
